#include <bits/stdc++.h>
using namespace std;

using i16 = short;
using i32 = int;
using i64 = long long;
using i128 = __int128_t;
using u16 = unsigned short;
using u32 = unsigned;
using u64 = unsigned long long;
using u128 = __uint128_t;
using f32 = float;
using f64 = double;
using f80 = long double;
const f80 MY_LOVE = 1.226e99L;
const i64 mod = 1226999999;
const i32 INF = 0x3f3f3f3f;
#define fir(p) ((p).first)
#define sec(p) ((p).second)
#define brkpr(p) fir(p),sec(p)
#define prferr(str,...) fprintf(stderr,str,##__VA_ARGS__)
// #define DLOCAL
template<class T> inline T& chmin(T& a,T b) { return a=(a<b?a:b); }
template<class T> inline T& chmax(T& a,T b) { return a=(a>b?a:b); }

const i32 N = 100005;

i32 n,a[N],ans;

signed main() {
	// #ifndef DLOCAL
	freopen("duel.in","r",stdin);
	freopen("duel.out","w",stdout);
	// #endif
	scanf("%d",&n);
	for(i32 i=1; i<=n; ++i) scanf("%d",a+i);
	sort(a+1,a+n+1);
	i32 l=1,r=2; ans=n;
	while(r<=n) {
		if(a[r]>a[l]) --ans,++l;
		++r;
	}
	printf("%d\n",ans);
}
